package com.atguigu.activemq.topic;

import org.apache.activemq.ActiveMQConnectionFactory;

import javax.jms.*;
import java.io.UnsupportedEncodingException;

public class JmsProduce_Topic {
    public static final String ACTIVEMQ_URL="tcp://124.70.84.192:61616";
    public static final String TOPIC_NAME="topic_lemon";
    //先写死连接地址,tcp协议，以“tcp://”开头，端口号写后端进程端口号
    public static void main(String[] args) throws JMSException, UnsupportedEncodingException {
        //1、创建连接工厂,根据url地址
        //如果用户名密码都是默认的admin的话，连接可以用一个参数的构造方法，不然要用三个参数的构造方法，用户名密码url;
        ActiveMQConnectionFactory activeMQConnectionFactory=new ActiveMQConnectionFactory(ACTIVEMQ_URL);
        //2、通过连接工厂，获得连接connection并启动访问
        Connection connection = activeMQConnectionFactory.createConnection();
        connection.start();
        /*3、创建会话session
        参数1:是否开启事务；参数2:签收；*/
        Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
        //4、创建目的地(具体是队列queue还是主题topic),参数填主题名字；
        Topic topic = session.createTopic(TOPIC_NAME);
        //5、创建发布主题的生产者(提供者)
        MessageProducer messageProducer = session.createProducer(topic);
        //6、通过使用发布主题的生产者生产几条消息发送到MQ的主题里面
        for (int i=1;i<3;i++){
            //7、创建主题（发送字符串）
            TextMessage textMessage = session.createTextMessage("《主题》我发送的第" + i + "条消息");
            messageProducer.send(textMessage);
        }
        //关闭资源(正着开启，倒着关闭)
        messageProducer.close();
        session.close();
        connection.close();
        System.out.println("topic发布成功并连接中断");
    }
}
